package org.ch04.test00.lx05;

import org.ch04.test00.lx05.animal.Animal;
import org.ch04.test00.lx05.animal.BuRuAnimal;
import org.ch04.test00.lx05.animal.Lion;
import org.ch04.test00.lx05.user.BuRuSiYangYuan;
import org.ch04.test00.lx05.user.SiYangYuan;

/**
 * @author ZQX
 * @date 2025-03-31
 */
public class MainTest02 {
    public static void main(String[] args) {
        Lion xb = new Lion();

        // 错误：等号左右两边的泛型类型必须一致 - 泛型不变性
        // SiYangYuan<Animal> zs = new BuRuSiYangYuan<BuRuAnimal>();

        // 解决：通过协变可以实现泛型父类可以接收泛型子类
        SiYangYuan<? extends Animal> zs = new BuRuSiYangYuan<BuRuAnimal>();

        // 错误：经过协变后，对象不能访问具有泛型参数的方法
        // zs.tiJian(xb);
        // zs.xunCha(xb);

        zs.test("张三");


    }
}
